/* 
  Reflect 统一的对象操作API
    * 是一个静态类，不能用new Reflect() 
    * Reflect成员方法就是Proxy处理对象的默认实现
    * 可以用来统一对象属性操作的风格
*/

const obj = {
  a: 123,
  b: 456,
  c: {
    a: 1,
  }
}

const proxyObj = new Proxy(obj, {
  get (target, property) {
    console.log(target, property)
    return Reflect.get(target, property)
  }
})
console.log(proxyObj.a)

// console.log('a' in obj)
console.log(Reflect.has(obj, 'a'))
// console.log(delete obj['a'])
console.log(Reflect.deleteProperty(obj, 'a'))
// console.log(Object.keys(obj))
console.log(Reflect.ownKeys(obj))
